home *** CD-ROM | disk | FTP | other *** search
/ Aminet 13 / Aminet 13 - August 1996.iso / Aminet / game / misc / DoopsiDemo.lha / Programs.lha / Editor / Docs / ShortManual.edoc next >
Text File  |  1996-06-26  |  42KB  |  1,097 lines

  1. *************
  2. Introduction.
  3. *************
  4.  
  5. The name of the game.
  6.  
  7. Doopsi-GS means:  Dinamical Object Oriented Programming System Interface -
  8. Game System.  We named our program this way for many reasons:  Doopsi
  9. remember us of Boopsi, the Object Oriented Intuition System of our beloved
  10. Amiga; it's an Object Oriented program in the tecnical meaning of the word,
  11. that is to say as far as its internal structure is concerned; it's a
  12. Programming Interface because it simplifies the the programming task making
  13. it completely automatic and quick.
  14.  
  15.  
  16. This Programming System is very different from other products devoted to
  17. the same scope because it is extremely easy to use, even for people that
  18. has little programming skill:  the user draws all the graphics and supplies
  19. all the sounds and musics he needs and then our program puts all things
  20. together.  The idea that lies under all the inner workings of this program
  21. is straightforward:  you first define the scenes, then put some objects on
  22. them and, at last, you specify how each one of the objects must react when
  23. the guy that is playing acts on it (this is the only coding part you have
  24. to face).  Well, to be sincere there are other parts of the work I've not
  25. included in the previous description, but you'll learn them as you get more
  26. involved in Doopsi:  for example, one of the tasks you have to deal with is
  27. to build the path along which the Man walks (the Man with the capital
  28. letter is the chief character of the adventure), or another task is to
  29. write the dialogs between the Man and some other object, and so on.
  30.  
  31.  
  32. These are the features of Doopsi:
  33.  
  34. - OS sensitive (it works under V37+).
  35.  
  36. - completely localizable (it uses our "locator.library" to change
  37.    languages, but in future versions we will adapt it to the standard
  38.    "locale.library" if we can make it work also under V37).
  39.  
  40. - AGA compatible.
  41.  
  42. - the Editor is completely system friendly.
  43.  
  44.  
  45. The Doopsi Game System is made of two indipendent programs:  the Editor and
  46. the Player.  As their names might suggest, the Editor is the one that
  47. builds the adventure, while the Player exploits the datas produced by the
  48. Editor to make you play your game.  You have to think to the Editor as
  49. generating some sort of program and to the Player as an interpreter of such
  50. a program:  if occurs any runtime error the Player will prompt you with an
  51. error message and, if it can, continue the processing of the game, just as
  52. any interpreter of any language would do (well, actual languages can't
  53. continue after a runtime error, but we are better and we do!).
  54.  
  55.  
  56. ---------------------------------------------------------------------------
  57. ******************************************************
  58. The authors (the most interesting part of the manual):
  59. ******************************************************
  60.  
  61. this is the situation up to 27 - 6 - 1996 (date of first upload):
  62.  
  63. Andrea has just got a degree in Physics at the University of Milan, and is
  64. now studying to enter a Ph.D. course.
  65.  
  66. Fabio is working as a Project Manager at DeAgostini MultiMedia, in Milan.
  67. He likes Amigas, cakes, girls, fun, OOP programming and DOOPSI ;)
  68.  
  69.  
  70. Our addresses are:
  71.  
  72.       Fabio Rotondo                    Andrea Galimberti
  73.       c.so Vercelli, 9                 via Villoresi, 87
  74.       28100 Novara                     20029 Turbigo (Mi)
  75.       Italy                            Italy
  76.       E-Mail: fsoft@intercom.it
  77.  
  78.       Phone: (ITA) - (0)321 - 459676   Phone: (ITA) - (0)331 - 871009
  79.  
  80.  
  81. The Web pages are:
  82.  
  83.       http://www.intercom.it/~fsoft/doopsi.html    -> DOOPSI Home Page!!!
  84.       http://www.intercom.it/~fsoft                -> Fabio Soft Home Page
  85.  
  86. DOOPSI Mailing list:
  87.  
  88.       TO SUBSCRIBE send a mail to 
  89.  
  90.          fsoft@intercom.it
  91.  
  92.       With:
  93.  
  94.          SUBSCRIBE DOOPSI your_name@your_email.addr
  95.  
  96.       in the body.
  97.  
  98. ---------------------------------------------------------------------------
  99.  
  100. ****************
  101. Greetings go to:
  102. ****************
  103.  
  104. Mik and Gio of ClassX:   for some useful routines. For their support, 
  105.                          for their ideas, for beign them.
  106.  
  107. Giorgio Fornara:     for the great graphics of the Demo that is not
  108.                      included in this package, but will appear sooner than
  109.                      possible. He has drawn also the Doopsi logo that
  110.                      appears on the Editor's screen.
  111.  
  112. Andrea Rotondo:      for the Tutorial graphics.
  113.  
  114. Stefano Clemente:    for beta-testing.
  115.  
  116. Lele and Paolo of Intercom: for creating DOOPSI - Mailing list.
  117.  
  118. *******
  119. Hellos:
  120. *******
  121.  
  122. from Andrea to Laura: for having endured me until now.
  123.  
  124. from Fabio to his mommy (and also his father).
  125.  
  126. ---------------------------------------------------------------------------
  127.  
  128. *******************************
  129. LICENSE AGREEMENT FOR DOOPSI-GS
  130. *******************************
  131.  
  132. I. LICENSE RIGHTS AND RESTRICTIONS
  133.  
  134. Fabio Rotondo and Andrea Galimberti ("authors") grant you the
  135. non-exclusive, non-assignable right to use enclosed DOOPSI-GS software in
  136. object code form (the "DOOPSI") on a maximum of 1 computer system at one
  137. time.  You may not reverse engeneer, decompile, or dissassemble DOOPSI,
  138. except to the extent that the foregoing restriction is expressly prohibited
  139. by applicable law.  You may not rent or lease DOOPSI, or otherwise transfer
  140. DOOPSI and accompanying written materials.  All rights not expressly
  141. granted are reserved by authors.
  142.  
  143. II. NO WARRANTIES
  144.  
  145. DOOPSI and accompanying written materials are provided "as is", without
  146. warranty of any kind.  To the maximum extent permitted by law, authors
  147. declaim all warranties, either express or implied, including but not
  148. limited to implied warranties of merchantability, fitness for a particular
  149. purpose and noninfringment.  The entire risk arising out of the use or
  150. performance of DOOPSI and any accompanying written materials remains with
  151. you.
  152.  
  153. III. NO LIABILITY FOR CONSEQUENTIAL DAMGES
  154.  
  155. To the maximum extent permitted by applicable law:  in no event shall the
  156. authors or their suppliers be liable for any damages whatsoever (including,
  157. without limitation, damages for loss of business profits, business
  158. interruption, loss of business information, or other pecuniary loss)
  159. arising out of the use of or inability to use DOOPSI, even if the authors
  160. have been advised of the possibility of such damages.  Because some
  161. states/jurisdictions do not allow the exclusion or limitation of liability
  162. for consequential or incidental damages, the above limitation may not apply
  163. to you.
  164.  
  165. IV. SHARING AND SPREADING
  166.  
  167. You are authorized in spreading and sharing this document along with all
  168. the rest of the archive, only if the program is a "SHAREWARE" version or it
  169. is a "SPECIAL EDITION".  The "SPECIAL EDITION" may not be uploaded to
  170. Aminet or to any BBS and may not appear upon any magazine without the
  171. written permission of the authors.  You can, and you are invited to do so,
  172. copy and spread the original DOOPSI SHAREWARE VERSION archive, but you MUST
  173. NOT COPY in any form the DOOPSI REGISTERED VERSION, except for personal
  174. use.
  175.  
  176. V. MISCELLANEOUS
  177.  
  178. If you acquired this product in the United States, this Agreement is
  179. governed by the laws of the State of Washington.  If you acquired this
  180. product outside the United States, local law may apply.  If either party
  181. employs attorneys to enforce any rights arising out of or relating to this
  182. Agreement, the prevailing party shall be entitled to recover reasonable
  183. attorneys fees, costs and expenses.
  184.  
  185. ---------------------------------------------------------------------------
  186.  
  187. *************
  188. Installation.
  189. *************
  190.  
  191. There is an Installer script to accomplish this task, but for the ones that
  192. like to do it manually we describe what should be installed and where.  (By
  193. the way:  to use the script you must have the Installer program and the Lha
  194. utility.)
  195.  
  196.  
  197. The three archives have already the final directory structure.  You have
  198. first to depack the Programs.lha archive; the latter creates two
  199. directories:  one contains the Editor and the other contains the Player.
  200. There's also a third directory in which you find two libraries:  the
  201. "locator.library" and the famous "reqtools.library"; you have to copy these
  202. libraries to your Libs: directory.  The final step consists in making the
  203. following assignment:  Assign Doopsi: to the Editor directory.
  204.  
  205. The default language is english, but are supplied also the catalogs to
  206. install the italian language:  you just have to extract the Catalogs.lha in
  207. the same directory where you put the Editor drawer (not IN the Editor
  208. drawer, but NEXT to such a drawer).  This creates a Catalogs directory in
  209. the Editor directory and also adds the file "player.catalog" in the
  210. Player/Data drawer.
  211.  
  212. Then you have to depack the Tutorial.lha archive to the Same directory
  213. where you put the Editor drawer (not IN the Editor drawer, but NEXT to such
  214. a drawer):  this will create a directory Tutorial in the Editor drawer,
  215. where you can find some graphical datas to start immediately.
  216.  
  217.  
  218. The resulting directory structure is:
  219.  
  220.       Editor
  221.       |
  222.       +---Catalogs
  223.       |
  224.       +---Docs
  225.       |
  226.       +---palettes
  227.       |
  228.       `---Tutorial
  229.           |
  230.           +---Objects
  231.           |
  232.           +---Berny
  233.           |
  234.           +---Scenes
  235.           |
  236.           `---Sounds
  237.     
  238.       Player
  239.       |
  240.       `---Data
  241.     
  242.  
  243. The Editor Must find in its directory the file "doopsi.dat".  The Catalogs
  244. directory is needed only if want to use a language different from english
  245. (up to now only the italian catalogs are supplied):  you copy in this
  246. drawer only the catalogs of your favourite language and leave out all the
  247. others.
  248.  
  249. The Player Must find a subdirectory (of its own directory) named "Data"
  250. with the following files:  "player.dat" and "panel.iff".  The "panel.iff"
  251. is the console image you can change (see the Appendix B).  The
  252. "player.catalog" file is needed only if you want to use a language
  253. different from english, otherwise you can throw it away.
  254.  
  255. The catalogs' sources will be supplied (if wanted), with the executables
  256. used to create them, in a separate package.
  257.  
  258.  
  259. IMPORTANT NOTE:  The Editor needs the Doopsi:  assignment, but the Player
  260. has been built in such a way to be completely relocable (no assignments
  261. needed).  When you start the Player from a Shell you just have to make the
  262. Player directory the current one and then call the program:  the Player
  263. searches then in the current directory for a subdirectory named "Data",
  264. where it Must find the files "player.dat" and "panel.iff".  If, instead,
  265. you start the Player from the Workbench, it is unable to find the current
  266. directory (sorry, we'll fix this sooner than possible) and searches for the
  267. subdirectory "Data" in the Sys: drawer.
  268.  
  269. The commandline to start the Player is:  Player Doopsi_file_name.  If you
  270. forget to give a filename, the Player will open a file requester and asks
  271. you to select a file.
  272.  
  273.  
  274. ---------------------------------------------------------------------------
  275.  
  276. ****************
  277. The Main window.
  278. ****************
  279.  
  280. The story begins from here.
  281.  
  282. First of all, let's describe the window contents.  The topmost part is
  283. divided in two sections:  the left one is related to scenes, while the
  284. right one is dedicated to objects.  Then there comes a row with
  285. miscellaneous editors and, last but not least, the final row contains
  286. gadgets devoted to load and save your work as a whole.
  287.  
  288.  
  289. Let's start with the scene section.  To create a new scene you have to
  290. press the "New" button.  To select the scene to work with, you have to use
  291. the "List" gadget.
  292.  
  293. The remaining gadgets all open new editors.  The "Attrs" one is for
  294. entering the Screen Attributes editor, where you can change some features
  295. of your scene; the "Spot editor" button calls the Spot Editor to put Spots
  296. on the scene; the "Path editor" gadget enters the Path Editor used to edit
  297. the path on which your Man is supposed to walk.
  298.  
  299.  
  300. The "New" gadget creates a new object and opens the Object Attributes
  301. editor to allow the user to edit such an object.  The "List" gadget
  302. displays the list of all objects created up to now.
  303.  
  304. The "Attrib" gadget opens the Object Attributes editor; the "Doopsi code"
  305. button enters the Doopsi Coder used to specify what the Player should do
  306. when the user acts on an object; the "Anim Editor" gadget calls the Anim
  307. Editor that allows you to convert an object to an AnimObject by building an
  308. animation from its images.
  309.  
  310.  
  311. The next section contains three buttons:  the "Prefs" one enters the
  312. Preferences editor where you can change for example some names the Player
  313. uses as defaults, or your favourite paths, and so on; the "Dialog Editor"
  314. calls the Dialog Editor used to create dialogs between your Man and any
  315. other character of your story; the "Info" gadget tells you how many objects
  316. and scenes you created up to now and the amount of free memory.
  317.  
  318.  
  319. Now we describe the last row.  The "Save All" gadget is for saving all the
  320. adventure.  The "Save Final" button differs from the "Save All" gadget
  321. because the file saved will be encrypted.  The "Load All" gadget allows you
  322. to load a file saved with the "Save All" or the "Save Final" gadget.
  323.  
  324.  
  325.  
  326.  
  327. Some notes on how the Player finds the Man.
  328.  
  329. This problem arises because the Man is an AnimObject (actually four
  330. objects:  one for each direction) like all the other AnimObjects you may
  331. link to your game.  Thus the Player has to know which objects represent the
  332. chief character of the story.  The Man's internal name is composed of a
  333. root name (the default one is "Man") and an extension indicating the
  334. direction (e.g.:  U for up, D for down, etc.):  so the AnimObject
  335. containing the animation representing the Man walking right may be called
  336. (internal name always!) "ManR", and so on.  You need also other four
  337. AnimObjects representing the Man speaking in the four directions:  the name
  338. of such AnimObjects is built from the root name, adding to it a first
  339. extension (the default is "Talk") and the second extension is the direction
  340. as before.  So the tipical name of an AnimObject showing the Man speaking
  341. to the left is "ManTalkL".
  342.  
  343. You can choose your favourite root and extensions by writing them in the
  344. preferences editor.
  345.  
  346.  
  347. ---------------------------------------------------------------------------
  348.  
  349. ***********
  350. PATH EDITOR
  351. ***********
  352.  
  353. INTRODUCTION
  354.  
  355. Path Editor helps adventure creator to develope paths on which players will
  356. move.  Paths creation is probably one of the more complex things and
  357. requires some attention.  The path created upon a scene will limit players'
  358. movements during the game.  This must take the creator to an accurate
  359. planning for the creation of the path.
  360.  
  361. PATH THEORY
  362.  
  363. Path is structured in nodes, stop units.  Every node can be some special
  364. features that allows better control of player's movements in the scene, but
  365. we'll talk later about these features.  Every node has some branches (max.
  366. 7 per every branch) that allows links with other nodes.
  367.  
  368. Path sets, using nodes, player's freedom of movements.  A path is so build
  369. up by nodes, linked each other with branches, so to create a sort of "web".
  370. Player's movements on the scene will apply on this "web", as nodes and
  371. branches were a sort of "invisible railroad" on which player will move.
  372. Warning:  player's movements on a scene are binded ABSOLUTELY to the scene.
  373. It is not possible in any way to allow player to move somewhere else than
  374. path's extension.  If you'll ask to the player to reach a point out of
  375. path's limits, the player will reach the nearest point to the one selected.
  376. This aspect of the path could be seen as a limit, but it is one of the
  377. greatest features, which will allow a great flexibility in game-designing:
  378. for example, it is possible to create a scene that encloses more paths and
  379. "to forbid" certain areas until a particular condition happens.
  380.  
  381. With a bit of practice, you'll certainly design complex and various paths.
  382. Path Editor will trustly follow you step by step in this task.  
  383. Happy working.
  384.  
  385. NOTE:  following tutorials presume you already know other features of
  386. DOOPSI, such as scene creation, anim creation using Anim WorkShop and
  387. object handling with Object Attributes.
  388.  
  389. TUTORIAL 1 - A Simple Path
  390.  
  391. In this tutorial we'll learn to draw a little path of four nothes and to
  392. link these nodes each other with very simple diramations.  Goal of this
  393. tutorial is to get you used to Path Editor's basic commands.  You'll learn
  394. to add and delete nodes, to add branches and to force redrawing of the
  395. scene (needed in some occasions).  In the next one, we'll talk about more
  396. complex arguments.  Execute this tutorial more than one time, until you'll
  397. be sure you have complete knowledge of the commands.
  398.  
  399. To follow this tutorial, you must have already created a scene called
  400. "tutorial_room1".
  401.  
  402. Press Path Editor in DOOPSI main panel.
  403.  
  404. Do not be afraid for the great number of buttons, as time goes by, you'll
  405. perferctly know them.
  406.  
  407. First of all, it is better to place all nodes on the screen.  Naturally,
  408. you can add some of them later, but in this way you'll be certain to cover
  409. all important locations.
  410.  
  411. To add a node on the scene, you just have to do these steps:
  412.          - Press "Add Node(s)"
  413.  
  414.            From now on, until you choose to stop, every mouse click on the
  415.            scene will generate a new node.
  416.  
  417.         - Create four nodes, as they were formin a box.
  418.  
  419.         - Press "Add Branch(es)" to add branches.
  420.  
  421.           From now on, until you choose to stop, you'll be able to add
  422.           branches among nodes.
  423.  
  424.         - Press on the first node (it will change colour)
  425.         - Press on the second node (it will change colour and a straight line
  426.           will link these two nodes) 
  427.  
  428.         We have just created the first link. To create another one, follow
  429.         these steps:
  430.  
  431.         - Press on the second node (it will change colour)
  432.         - Press on the third node (it will change colour and a strainght line
  433.           will link these two nodes)
  434.  
  435.         Follow these steps to link each node to the next, creating a box.
  436.  
  437. Now you have created these nodes, you can test the movements that the
  438. player will be able to do during the adventure:
  439.  
  440.         - press the button "Try Movements" and select starting node
  441.           (for example, the first). Node will change colour.
  442.  
  443.         - Select the second node (for example, the third). Node will change
  444.           colour.
  445.  
  446. Program will try to compute the path between two selected nodes and will
  447. show it, step by step, highlighting nodes.  If you have selected the first
  448. and the third and you have linked how we described in the example, you
  449. should see highlight nodes one, two and three.  Naturallym this is a quite
  450. simple example, but the chance of testing path is very useful in complex
  451. scenes.
  452.  
  453. Now create a new node where you want and link to it other nodes, following
  454. previously described steps.  Try again to use the "Try Movements".
  455.  
  456. Before end this tutorial, let's try to delete a node from the scene:
  457.  
  458.         - Press "Kill Node"
  459.         - Select node you wish to remove.
  460.         - Node will be erased.
  461.  
  462. At this point, some graphics on the scene could be damaged and that the
  463. node you have just erased seems to be still there.  This is not a DOOPSI
  464. problem, but you need to refresh completely the graphic.  Press "Redraw
  465. All" to update the graphic, you'll see that now the deleted node will not
  466. appear anymore.
  467.  
  468. ---------------------------------------------------------------------------
  469.  
  470. ****************
  471. The Spot editor.
  472. ****************
  473.  
  474. This allows you to put "Spots" on the scene:  they are simply little
  475. crosses with two coordinates and a name.  You use this name to address a
  476. particular spot and Doopsi will use its coordinates.
  477.  
  478.  
  479. Here is a TUTORIAL:
  480.  
  481. - Create a new scene (using the "New" gadget in the scene section of the
  482. main editor window).
  483.  
  484. - Enter the Spot editor.
  485.  
  486. - Click on the "Add Spot" gadget:  a message will appear saying "Add mode
  487. enabled".
  488.  
  489. - Click on the scene where you want to put a spot:  you can repeat this
  490. last operation until you have positioned all your spots.
  491.  
  492. - Click again on the "Add Spot" gadget to disable the Add mode.
  493.  
  494. - Click on your scene to select a spot:  a message will appear saying "Get
  495. Info"
  496.  
  497. - You can modify the currently selected spot name by just writing it in the
  498. string gadget "Spot Name" and pressing Return.
  499.  
  500. - Quit the Spot editor.
  501.  
  502.  
  503. ---------------------------------------------------------------------------
  504.  
  505. ****************************
  506. The Screen attibutes editor.
  507. ****************************
  508.  
  509. This editor allows you to change the name of the current scene, to load
  510. a different background without removing objects, path and spots you have
  511. already linked to that scene, and other useful things...
  512.  
  513. The bottom row says something like this:  "Use Action Open of Object foo".
  514. In other words the Doopsi code contained in the specified action of the
  515. selected object will be executed every time you enter the scene during the
  516. game.  To switch off this option you have to clear the object's name in the
  517. string gadget.
  518.  
  519.  
  520. ---------------------------------------------------------------------------
  521.  
  522. *****************************
  523. The Object Attributes Editor.
  524. *****************************
  525.  
  526. This editor allows you to specify an object characteristics and to put it
  527. on the scene.
  528.  
  529.  
  530. A first tutorial: "the little sheet of paper".
  531.  
  532. - I suppose you already loaded a scene to put objects on it.  Now create a
  533. new object by pressing the "New" gadget in the object section of the main
  534. window.
  535.  
  536. - Enter the Object Attributes editor.
  537.  
  538. - In the "Name" string gadget enter "the paper".
  539.  
  540. - Click on the "Internal Name" string gadget and write "paper".
  541.  
  542. - Click on the cycle gadget to select the "Graphic" object type because our
  543. object is going to be drawn on the scene.
  544.  
  545. - Press the "Add" button and, using the file requester, choose the "paper"
  546. image in the Tutorial directory.  Now the image is linked to the object.
  547.  
  548. - Eventually press the "Pos" button to position the object on the scene.
  549.  
  550. - You can move the object to its final location by selecting it with the
  551. mouse and dragging it around the scene.
  552.  
  553.  
  554. A second tutorial: "an empty zone".
  555.  
  556. - Create a new object just as in the previous tutorial.
  557.  
  558. - Enter its name and (more important) internal name.
  559.  
  560. - Click on the cycle gadget to select the "Empty" object type:  our object
  561. will be an empty frame (not drawn on the scene during the game).
  562.  
  563. - Press the "Set Zone" button:  a rectangle will appear on the scene.
  564.  
  565. - Drag the rectangle around the scene with the mouse and scale it using the
  566. gagdet in the lower right corner of the rectangle itself.
  567.  
  568. - When you're done, click on the "Pos" gadget to link this object to the
  569. scene.
  570.  
  571.  
  572. ---------------------------------------------------------------------------
  573.  
  574. *****************
  575. The Doopsi Coder.
  576. *****************
  577.  
  578. Introduction
  579.  
  580. The Doopsi Coder is the editor that allows you to "program" the objects to
  581. react to the user's actions.  As far as the Doopsi Player is concerned,
  582. objects are only complex data structures without a precise meaning:  the
  583. task of the Coder is to coordinate the user's actions with the behaviour of
  584. every object.  The Coder is probably the most important part in the editing
  585. of an adventure, because it allows the user to give a "real" appearance to
  586. the objects on the scene and allows the player to interact with such
  587. objects.
  588.  
  589.  
  590. Note:  the following tutorials suppose that you already know something
  591. about Doopsi, like the Object Attributes editor.  We refer the reader to
  592. the chapter related to such an editor to revise how to create and edit a
  593. new object.
  594.  
  595.  
  596. Tutorial 1 - "A door that open and close"
  597.  
  598. To use this example you are supposed to have created an object called
  599. (internal name) "door" with two shapes linked to it, the first representing
  600. the door closed ("door_closed") and the second representing the door open
  601. ("door_open").
  602.  
  603. - From the main window make the "door" the current object and enter the
  604. Doopsi coder.
  605.  
  606. - Press the "Open" button to code the object reaction to the action "Open".
  607. Now execute the following steps:
  608.  
  609.    - Instruction "IfStatus"
  610.    - Select the "door" object
  611.    - Insert 0 when you are asked for a value
  612.    (in the Coder window will appear the line: IfStatus SELF, 00)
  613.    - Instruction "ChangeStatus"
  614.    - Select the "door" object
  615.    - Insert the value 1
  616.    (in the Coder window will appear the line: ChangeStatus SELF, 01)
  617.    - Instruction "ChangeShape"
  618.    - Select the "door" object
  619.    - Select the name of the shape representing the door open
  620.    (in the Coder window will appear the line: ChangeShape SELF, 01)
  621.    - Instruction "Else"
  622.    - Instruction "ShowText"
  623.    - When asked for a string enter: "The Door is already open"
  624.    (in the Coder window will appear the line: ShowText The Door is already
  625.    open)
  626.  
  627. At the end of the previous steps you should have in the Coder's window the
  628. following code:
  629.  
  630.     IfStatus SELF, 00
  631.     ChangeStatus SELF, 01
  632.     ChangeShape SELF, 01
  633.     Else
  634.     ShowText The door is already open
  635.     EndIf
  636.  
  637. This means (line by line):
  638.  
  639.    If the status of the object itself (SELF -> "door") is 0
  640.    Change the status of the object itself (SELF) to 1
  641.    Change the shape of the object itself (SELF) to 1 (the door open)
  642.    Else
  643.    Show the message "The door is already open"
  644.    End of the If group
  645.  
  646. Now we are going to write the code relative to the "Close" action. Press
  647. the "Close" button to code such an action, and execute the following steps:
  648.  
  649.    - Instruction "IfStatus"
  650.    - Select the "door" object
  651.    - Insert the value 1
  652.    - Instruction "ChangeStatus"
  653.    - Select the "door" object
  654.    - Insert the value 0
  655.    - Instruction "ChangeShape"
  656.    - Select the "door" object
  657.    - Select the name of the shape representing the door closed
  658.    - Instruction "Else"
  659.    - Instruction "ShowText"
  660.    - Enter "The door is already closed"
  661.    - Instruction "EndIf"
  662.  
  663. The following code will appear:
  664.  
  665.     IfStatus SELF, 01
  666.     ChangeStatus SELF, 00
  667.     ChangeShape SELF, 00
  668.     Else
  669.     ShowText The door is already closed
  670.     EndIf
  671.  
  672. "Translated" into everyday words this means:
  673.  
  674.    If the status of the object itself (SELF -> "door") is 1
  675.    Change the status of the object itself (SELF) to 0
  676.    Change the shape of the object itself (SELF) to 0 (the door closed)
  677.    Else
  678.    Show the message "The door is already closed"
  679.  
  680. At this stage the coding of the "door" object is completed. You can press
  681. the Ok button to quit the Coder and return to the main window.
  682.  
  683.  
  684. ---------------------------------------------------------------------------
  685.  
  686. *****************
  687. The AnimWorkshop.
  688. *****************
  689.  
  690. This editor allows you to build animations putting together some shapes in
  691. a sequence.  The result is that you change an Object in a more complex
  692. thing called an "AnimObject", that is to say an object containing an
  693. animation.  Such an animation will be played when the AnimObject is blitted
  694. on the scene.
  695.  
  696.  
  697. Let's start with a quick tutorial:  "putting together a pendulum"
  698.  
  699. - Create a new object with "Pendulum" as internal name.
  700.  
  701. - Enter AnimWorkshop.
  702.  
  703. - Select the "Load Frames" gadget and, using the file requester, select the
  704. shape named "pendulum.000".  AnimWorkshop will then load the three shapes
  705. called "pendulum.000", "pendulum.001" and "pendulum.002".
  706.  
  707. - Select frame number 0 and click on the "Add Frame" gadget; select frame
  708. number 1 and click on the "Add Frame" gadget; repeat again for the third
  709. and last frame.
  710.  
  711. - Now enter 3 in the "Frame Rate" string gadget.
  712.  
  713. - Press "Play" to view the animation and the right mouse button to stop it.
  714.  
  715. - Press the "Ok" gadget to exit AnimWorkshop.
  716.  
  717.  
  718. Here's a more difficul tutorial on "how to build the Man":
  719.  
  720. - First create a new object using the Object Attributes Editor (I suppose
  721. you already know how to do this) and call it (internal name) "ManRight".
  722. Now you are ready to enter AnimWorkshop.
  723.  
  724. - Select the "Load Frames" gadget and, using the file requester, select the
  725. shape called "man_walk_right.000":  AnimWorkshop will load this frame and
  726. all subsequent frames with the same name and increasing number; such frames
  727. will be displayed on a new screen.  You can cycle through them using the
  728. "Prev" and "Next" gadgets in the upper part of the editor window.
  729.  
  730. - Select frame number 1 (frame 0 is the rest frame and we will consider it
  731. later) and click on the "Add Frame" gadget:  the number 1 will appear in
  732. the Sequence window.  Then move to frame number 2 and click again on Add
  733. Frame; repeat these actions until the last frame is added.
  734.  
  735. - Now you can enter the frame rate in the "Frame Rate" string gadget:
  736. write 12 and press Return.
  737.  
  738. - Well, your animation is ok:  press on the "Play" gadget to look at it.
  739.  
  740. - Stop the animation by pressing the right mouse button.  Then, exit
  741. AnimWorkshop by pressing either the "Ok" or the "Cancel" button depending
  742. on whether you are satisfied of your animation or not.
  743.  
  744. - What about frame number 0?  It cannot be included in the animation
  745. because it is the rest frame, but the Player has to know which frame to use
  746. when the Man is still:  so we link it to our Man object and point to it by
  747. the "Default Shape" field in the Attributes editor.  (Obviously this field
  748. has no meaning for a general animation.)
  749.  
  750.  
  751. ---------------------------------------------------------------------------
  752.  
  753. *************
  754. DIALOG EDITOR
  755. *************
  756.  
  757. INTRODUCTION
  758.  
  759. In every good adventure, dialogs between characters have to be present.
  760. Better dialogs are, brighter conversations, more funny is the adventure.
  761. To create dialogs is not an easy task:  you have to consider a lot of
  762. elements and foresee a different answer for every possible phrase.  That's
  763. why we strongly suggest to plan your dialogs and to track on a sheet of
  764. paper real flow charts where "to see" dialogs' structure.
  765.  
  766.   Dialogs, in DOOPSI, can be structured in a handy and powerful way and it
  767. is possible to write dialogs calling other dialogs or jumping from one part
  768. to the other to get back later.
  769.  
  770.   Dialog Editor is a easy and functional tool that will allow you to create
  771. complex dialogs in a minute:  be carefull, anyway, because, as we have
  772. already said before, not planning the dialog, you'll risk to get lost...
  773. to loose, just to say, the dialog's path.
  774.  
  775.  
  776. WHAT IS A DIALOG
  777.  
  778.   In DOOPSI, a Dialog is composed by a sequence of "pages".  As in all
  779. others DOOPSI elements, even Dialog's pages have their "internal name" that
  780. identify them.
  781.   A page is made by an "answer", which is the phrase that the talker will
  782. say to our player and one or more phrases user selectable as "answer" to
  783. the "answer"...  hmmm, said in this way, it may seem to be confused, let's
  784. try to explain better, with an example:  let's start with the tutorial.
  785.  
  786. TUTORIAL 1 - A Breef Dialog
  787.  
  788. To enter into the Dialog Editor, simply press "Dialog Editor" button in the
  789. Main Window.  At this point you'll see the Dialog Editor which will allow
  790. you to create the dialog.
  791.  
  792.    1 - Press the "New" button to create a new dialog page.
  793.        A string request will pop up asking for the page's internal name.
  794.        We want this page to be the starting point, so write "Start_Dialog".
  795.        Now you can start to write dialog phrases.
  796.  
  797.    2 - Press the "Add" button (bottom left) to add a new phrase. The "New
  798.        Phrase" string will appear in the string gadget called "Phrase:".
  799.        Delete "New Phrase" and insert: "Hello! How are you?"
  800.     
  801.    3 - Repeat step 2, inserting these messages: "How are you!" and
  802.        "I should go now".
  803.  
  804.    4 - Now we have to create a segond page, press "New" and place
  805.        "How_Are_You" as internal name, se we'll remember this page is
  806.        the answer to the "Hello, how are you?" question.
  807.  
  808.    5 - In the "Answer:" gadget (top of the window), write "Well!",
  809.        this is the answer that our friend will give us.
  810.        To write something inside this field is not stricly wanted, but
  811.        it is always better that the other says something... otherwise
  812.        our Dialog could become a "monologue".
  813.        The only solution in which we should omit an answer is in the first
  814.        dialog's page, when we begin to talk with someone.
  815.  
  816.    6 - Now repeat setp 2, and write "Now I go, bye".
  817.  
  818.    7 - Now we have to "link" these two pages together.
  819.        To do so, return to the first page. Press the "Select" gadget:
  820.        a Lister containing dialog pages' names will appear. In our case
  821.        there'll be two names: "Start_Dialog" and "How_Are_You", select
  822.        "Start_Dialog".
  823.        Dialog Editor's window will show the first page again.
  824.  
  825.    8 - Now press on the phrase, "Hello, how are you?" that will appear in
  826.        the string gadget (if you wish, you should also edit the phrase)
  827.        and then select the "Jump" button, the same Lister we have seen
  828.        previously will appear again, this time select "How_Are_You"
  829.        phrase: the page's name will appear in the string gadget "Jump:".
  830.        That's all! Now, when, during the game, user will select phrase
  831.        "Hello! How are you?" the other will say "Well!".
  832.        Is that easy, isn't it?
  833.  
  834.    9 - Just for fun, we'll link also the "How Are You!" phrase to 
  835.        "How_Are_You" page. Press "How are you!" and then on "Jump" and 
  836.        select "How_Are_You".
  837.  
  838.    NOTE: a phrase without a jump means "END OF DIALOG". When the user will
  839.          select one of these phrases, the Dialog ends.
  840.          In our example, we have two phrases of this kind: the first is
  841.          "I should go now" and the other is "Now I go, bye".
  842.  
  843.    NOTE2: as a convention, the exiting phrase is the last in the list.  
  844.           Where possible, please keep this convention.
  845.  
  846. ---------------------------------------------------------------------------
  847.  
  848. ***********
  849. PREFERENCES
  850. ***********
  851.  
  852. DOOPSI is a complex and flexible program and some of its features can be
  853. adapted to programmer's needs.  In DOOPSI, modifications apply by
  854. Preferences window, divided in four parts.
  855.  
  856.   Path Selection.
  857.  
  858.   In this section it is possible to choose dirs containing all files of a
  859. specific kind.  Creating complex adventures, it is better to divide
  860. graphics, sound and all the rest in different dirs.  With these paths,
  861. every time a file requester will appear (for example to load a background)
  862. the directory will be set to the preferences' one.  In case you do not want
  863. any default dir, just plase an empty string in the string requester.
  864.   Next to the string gadget there is a gadget called "R" (research), which
  865. will open a path requester you can use to search the directory you want to
  866. set as default.
  867.  
  868.   Palette Editing
  869.  
  870.   In this section it is possible to load, edit and save DOOPSI's colors.
  871. By pressing "Load" you'll be able to load up the first four colors of any
  872. IFF pic, with "Save" you can save the palette and with "Edit" you will be
  873. prompted to a standard Palette Requester which allows you to directly edit
  874. colors.
  875.  
  876.   Setting Default Names  
  877.  
  878.   This is the most important secion of the preferences window.
  879.   As you should already know, DOOPSI uses for the adventurer some default
  880. names, needed to the Player to use the right animations when needed.  Just
  881. to fresh your mind, suggesting to go to read again the complete Player
  882. documentation, here there are default names:
  883.  
  884.    NAME         DEF. VALUE   DESCRIPTION
  885.    Root         Man          It is the root name, which defines game player's
  886.                              anims.
  887.  
  888.    Left         L            These four vals set animations of player 
  889.    Right        R            in all the four directions. For example 
  890.    Up           U            ManU is "Man Up", that is: "animation of the
  891.    Down         D            man walking forward".
  892.  
  893.    Talk         Talk         This is a kind of "second root" and it is the
  894.                              suffix that is added DIRECTLY to the real root
  895.                              to define anim of player while it speaks.
  896.                              To this new root, the usual suffix Left, Right,
  897.                              Up or Down. For ex. player speaking to the
  898.                              left is so defined: ManTalkL.
  899.  
  900.   These names, being just for "internal" use of the Player, should remain
  901. "rigid" and not modifiable, but we preferred to allow modification, to let
  902. everything be more readable.  Infact, you can change these names, giving
  903. them a more exaustive meaning.  Here there is an example.
  904.  
  905.   Root = Man
  906.   Talk = _talking
  907.   L    = _left
  908.   R    = _right
  909.  
  910. the old ManTalkL become:  "Man_talking_Left", more elegant.  Be careful,
  911. anyway:  in DOOPSI internal name are fixed to 20 char length.
  912.  
  913.   Starting Scene
  914.  
  915.   With this last part of Preferences' window, you can define the name of
  916. the first scene that will be shown at the beginning of the adventure.
  917.  
  918.   "USE/LOAD/SAVE/CANCEL" Gadgets
  919.  
  920.   These gadgets allows you to do the following things:  "USE" to use the
  921. current configuration, "LOAD" and "SAVE" to load a previous saved
  922. configuration and to save the current one, and "CANCEL" to abort settings.
  923.  
  924.    Note
  925.  
  926.    Preferences are ALWAYS saved with the complete DOOPSI file, to allow
  927. handling of different adventures at the same time with different settings.
  928.  
  929. ---------------------------------------------------------------------------
  930.  
  931. *********************************
  932. Appendix A:  Doopsi instructions.
  933. *********************************
  934.  
  935. In the following list, objects and scenes are identified by their internal
  936. names, so Object represents the Object internal name, and so on.
  937.  
  938. Here is the description of only a limited number of instructions:
  939. registered users will get the complete documentation.
  940.  
  941.  
  942. ChangeDescription Object, Text
  943.  
  944. Changes the name field of the selected Object to Text.  This name is the
  945. one that appears on the console display line when the object is selected on
  946. the scene.
  947.  
  948.  
  949. ChangeScene Scene
  950.  
  951. If Scene has been found, this instruction exits the current scene and
  952. displays the new scene.
  953.  
  954.  
  955. ChangeShape Object, Shape
  956.  
  957. Changes the current shape of the selected Object.
  958.  
  959.  
  960. ChangeStatus Object, Value
  961.  
  962. Puts Value in the status field of the selected Object.
  963.  
  964.  
  965. IfOnScene Object
  966.  
  967. Returns True if Object is blitted on the scene.
  968.  
  969.  
  970. IfSceneIs Scene
  971.  
  972. Returns True if Man is currently in scene Scene.
  973.  
  974.  
  975. IfStatus Object, Status
  976.  
  977. Returns True if the status field of the selected object is equal to Status.
  978.  
  979.  
  980. InvToScene Object
  981.  
  982. Picks up the selected Object from the inventory and puts it on the scene at
  983. the internal coordinates of Object:  such coordinates are initialized when
  984. the Object is positioned on the scene using the Editor.  If Object is an
  985. AnimObject then the animation will be automatically played.
  986.  
  987.  
  988. MoveObject Object, Spot
  989.  
  990. Moves Object from its current position on the scene to the location
  991. specified by Spot position.  During the movement an AnimObject is
  992. substituted to the Object current shape if it has been previously specified
  993. with the SetMoveAnim instruction.
  994.  
  995.  
  996. MusicPlay File
  997.  
  998. Starts playing the contents of File.  File must be a standard tracker
  999. module.
  1000.  
  1001.  
  1002. Open  Object
  1003. Close Object
  1004. Look  Object
  1005. Take  Object
  1006. Drop  Object
  1007. Push  Object
  1008. Pull  Object
  1009. Talk  Object
  1010. Use   Object
  1011.  
  1012. These instructions execute the Doopsi code contained in the corresponding
  1013. action of Object.  They are treated just like subprograms, and you can nest
  1014. at most 10 of such subprograms.
  1015.  
  1016.  
  1017. PutObject Object, Spot
  1018.  
  1019. Blits Object at the Spot location.  Object may be also an EmptyZone.
  1020.  
  1021.  
  1022. SceneToInv Object
  1023.  
  1024. Picks up the selected Object from the scene and puts it in the inventory.
  1025. If Object is an AnimObject the animation will be automatically stopped.
  1026.  
  1027.  
  1028. SetManName Object
  1029.  
  1030. This instruction is used to change the Man's animations:  the root name
  1031. (that is to say, after having removed any extension) of Object is used to
  1032. build the Man's names until SetManName is called again or it is issued by a
  1033. path node.
  1034.  
  1035.  
  1036. ShowAnim AnimObject
  1037.  
  1038. This instruction plays the animation contained in AnimObject.  The
  1039. animation will be displayed at the internal coordinates of AnimObject.  The
  1040. number of animations the Player can handle at the same time is limited.
  1041.  
  1042.  
  1043. ShowDialog Dialog
  1044.  
  1045. This starts a conversation between the Man and the currently selected
  1046. object.  Dialog is the first page of the conversation.  If the animation
  1047. showing the Man talking is found then it is played; you can choose an
  1048. animation showing Object talking with SetTalkAnim.  The Man text colour and
  1049. the object text colour are selected using calls to ManTalkColour and
  1050. ObjTalkColour respectively.
  1051.  
  1052.  
  1053. ShowText Text
  1054.  
  1055. Displays Text.  The position and line breaks will be determined by the
  1056. Man's position in the scene and by the width of the scene itself.  The
  1057. Man's direction determines which one of four animations will be played, if
  1058. it is found, to make the Man speak; if the animation is not present the
  1059. Player won't complain and it only leaves the Man still.  The colour of the
  1060. text is selected using the ManTalkColour instruction.  The user has to
  1061. click once on the left mouse button to quit the text.
  1062.  
  1063.  
  1064. SoundPlay File
  1065.  
  1066. Plays the contents of File.  File must be a standard Iff 8SVX sample.
  1067.  
  1068.  
  1069. ---------------------------------------------------------------------------
  1070.  
  1071. *************************
  1072. Appendix B:  The console.
  1073. *************************
  1074.  
  1075.  
  1076. The console is contained in the file "panel.iff".
  1077.  
  1078. The console+disk screen must be a lowres non interlaced screen and the user
  1079. can paint everything he likes on it, but he must remember to observe the
  1080. dimensions of the sensing zones.
  1081.  
  1082.  
  1083. ---------------------------------------------------------------------------
  1084.  
  1085. ***********
  1086. The Player.
  1087. ***********
  1088.  
  1089. The startup sequence.
  1090.  
  1091. When the Player starts it searches, before anything else, for the console
  1092. (the bottom half of the screen where the buttons and the inventory stay)
  1093. and the file "player.dat".  Then it looks for the Doopsi main file and,
  1094. from this time on, all the actions are determined by the data it finds in
  1095. such a file.  If it doesn't find anyone of the above mentioned pieces then
  1096. it complains and quits.
  1097.